package com.hsgene.user.persistence;

import com.hsgene.common.util.support.LimitHelper;
import com.hsgene.user.domain.GoodsCollection;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 商品收藏Repository
 *
 * @author wangbing
 * @version 1.0, 2018/8/27
 */
@Repository
public interface GoodsCollectionRepository {

    /**
     * 收藏商品
     *
     * @param collection 收藏信息
     */
    void addCollection(@Param("collection") GoodsCollection collection);

    /**
     * 更新收藏商品
     *
     * @param collection 收藏信息
     */
    void updateCollection(@Param("collection") GoodsCollection collection);

    /**
     * 取消商品收藏
     *
     * @param userId   用户id
     * @param goodsIds 收藏商品id列表
     */
    void removeCollection(@Param("userId") String userId, @Param("goodsIds") List<String> goodsIds);

    /**
     * 查询用户收藏的全部商品
     *
     * @param userId      用户id
     * @param available   是否有效
     * @param limitHelper 分页参数
     * @return 收藏列表
     */
    List<GoodsCollection> queryCollection(
            @Param("userId") String userId,
            @Param("available") Boolean available,
            @Param("limitHelper") LimitHelper limitHelper);

    /**
     * 用户收藏数量
     *
     * @param userId    用户id
     * @param available 是否有效
     * @return 收藏数量
     */
    Integer countCollection(
            @Param("userId") String userId,
            @Param("available") Boolean available);

    /**
     * 查询用户是否收藏指定商品
     *
     * @param userId  用户id
     * @param goodsId 商品id
     * @return 收藏信息
     */
    GoodsCollection findCollection(@Param("userId") String userId, @Param("goodsId") String goodsId);
}
